#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/time.h>
#include <time.h>
#include <unistd.h>
#include <sys/timeb.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <errno.h>
#include <fcntl.h> // file option
#include <signal.h>
#include <dirent.h>
#include <pthread.h>
// #include <iostream>
// #include <sstream>
// #include <vector>
// #include <list>
// #include <map>
// #include <thread>
// #include <string>
// #include <iomanip>
// #include <fstream>
// #include <vector>
// #include <set>
// #include <algorithm>
// #include <unordered_map>
// #include <mutex>
// #include <atomic>
// #include <bits/wordsize.h>
// #include <bits/timesize.h>
//进程通讯有管道，命名管道，信号，消息队列，信号量，共享内存，sock。
//这里说命名管道，信号量。
//命名管道，多个接收只会有一个会接收到数据，单次接收最大64K。它就是单向的。
//信号，这里只列了收到kill信号。
//sock是双向的，但是速度较慢；共享内存快；消息队列最大包8K，单向。根据实际情况定哪一种。
int threadRunFlag = 1;
void signalUserCbkFunc(int s)
{
    if (s == SIGINT)
    {
        threadRunFlag = 0;
        printf("receive exit signal! quit now!\n");
    }
}

#define FIFO_CMD_FILE_NAME "/tmp/fifoCommTest.txt"

void *fifoThreadFunc(void *fval)
{
    // write(fifoCmdFd1, "abc", 4);
    printf("thread begin\n");
    while (threadRunFlag)
    {
        usleep(10 * 1000);
    }
    return NULL;    
}

#define FIFO_MAX_LEN (200 * 1024)
int main()
{
    pthread_t tmpthread;
    signal(SIGINT, signalUserCbkFunc);
    pthread_create(&tmpthread, NULL, fifoThreadFunc, NULL);
    usleep(1000 * 1000);
    printf("main begin\n");
    while (threadRunFlag)
    {
        usleep(10 * 1000);
    }
    return 0;
}